package com.sms.dao;

import java.util.List;
import java.util.Map;

import org.hibernate.criterion.DetachedCriteria;

import com.sms.dto.TestNumberDto;
import com.sms.po.TInvalidmsg;
import com.sms.po.TMsgRpt;
import com.sms.po.TSendmsg;
import com.sms.po.TWaitsend;
import com.sms.po.UserInfoSms;


/**
 * @author 20111012 by cxh
 */
public interface IReportDAO {
	
	/**
	 * 分页显示满足条件的下行短信查询
	 * @param start 第几行开始
	 * @param limit 取多少行
	 * @return
	 */
	List<TSendmsg> showSmsDetailByPage(DetachedCriteria criteria, int start,int limit);
	
	/**
	 * 满足条件下行短信记录数
	 * @return
	 */
	int getSmsDetailCount(DetachedCriteria criteria);
	
	
	/**
	 *  分页显示所有满足条件的下行短信数据
	 * @param phone 手机号
	 * @param userId 如果用户为非系统用户，则只能查自己本身的下行短信
	 * @param start 第几行开始
	 * @param limit 取多少行
	 * @return
	 */
	List<TestNumberDto> showTestNumberByPage(String userId,int start,int limit);
	
	/**
	 * 满足条件筛选测试号码记录总数
	 * @return
	 */
	int getTestNumberCount(String userId);
	
	
	List<TestNumberDto> showTestNumber2ByPage(String userId,String searchStr, int start,int limit);
	
	/**
	 * 满足条件筛选测试号码记录总数
	 * @return
	 */
	int getTestNumber2Count(String userId,String searchStr);
	
	
	/**
	 * 用户发送统计报表
	 * @param map
	 * @param start
	 * @param limit
	 * @return
	 */
	List<TMsgRpt> showUserSendReportByPage(Map<String,String> map,int start,int limit);
	
	int getUserSendReportCount(Map<String,String> map);
	
	/**
	 * 通道发送统计报表
	 * @param map
	 * @param start
	 * @param limit
	 * @return
	 */
	List<TMsgRpt> showRouteSendReportByPage(Map<String,String> map,int start,int limit);
	
	int getRouteSendReportCount(Map<String,String> map);
	
	
	/**
	 *  分页显示所有满足条件的非法短信列表
	 * @param userId 
	 * @param start 第几行开始
	 * @param limit 取多少行
	 * @return
	 */
	List<TInvalidmsg> showInvalidmsgByPage(DetachedCriteria criteria,int start,int limit);
	
	/**
	 * 满足条件非法消息记录总数
	 * @return
	 */
	int getInvalidmsgCount(DetachedCriteria criteria);
	
	/**
	 *  分页显示所有满足条件的下行短信数据
	 * @param phone 手机号
	 * @param status 状态:0-只查待发，1-只查已发，2-查所有
	 * @param userid 如果用户为非系统用户，则只能查自己本身的下行短信
	 * @param start 第几行开始
	 * @param limit 取多少行
	 * @return
	 */
	List<TWaitsend> showWaitsendSmsByPage(DetachedCriteria criteria,int start,int limit);
	
	/**
	 * 满足条件记录总数
	 * @param phone
	 * @param status 状态:0-只查待发，1-只查已发，2-查所有
	 * @param userid
	 * @return
	 */
	int getWaitsendSmsCount(DetachedCriteria criteria);
}
